/*********************************************************************
 * pair的一般用法总结：
 * 1、什么是pair
 *    pair是将两个数据合并成一组数据进行操作，其实现就是一个结构体，具有成员
 *    变量first/second。
 * 2、为什么需要pair
 *     当需要操作一组对象的时候可以使用pair；当函数需要返回两个数据成员时；
 * 3、如何使用pair
 *    pair的使用和基本数据类型一致，可以通过定义初始化/make_pair等来实现
 * ******************************************************************/
#include "common.h"
using namespace std;

pair<string, int> GetMsg()
{
    pair<string, int>p = make_pair("wang", 18);
    return p;
}

void GetNameAge(string name, int age)
{
    vector<pair<int, string>>vec;
    vec.push_back(make_pair(1,"wang"));
    vec.push_back(make_pair(2,"yang"));
    vec.push_back(make_pair(3,"xiong"));
    vec.push_back(make_pair(4,"chen"));
    for(auto& iter : vec) {
        if ((iter.first == age) && (iter.second == name)) { // 可以根据first/second找出对应的元素
            printf("I Can Find\n");
            return;
        }
    }
    printf("I Can Not Find\n");
}

int main()
{
    pair<int, string>p1;
    pair<int, string>p2(1, "wang");
    pair<int, string>p3 = make_pair(3,"yang");

    p1 = p3;

    printf("p2 first = %d, second = %s\n", p2.first, p2.second.c_str());
    printf("p3 first = %d, second = %s\n", p3.first, p3.second.c_str());

    pair<string, int>p4 = GetMsg();
    printf("p4 first = %s, second = %d\n", p4.first.c_str(), p4.second);

    GetNameAge("wang", 1);
    GetNameAge("wang", 3);

    return 0;
}